package me.firstapp.spi.shop;

import java.util.Map;

import me.firstapp.common.json.ListObject;
import me.firstapp.common.json.PageObject;
import me.firstapp.common.json.SingleObject;
import me.firstapp.common.module.shop.JsonProduct;
import me.firstapp.common.module.shop.JsonProductInManage;

public interface ProductService {

	/**
	 * 调用分页查询商品接口
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @param categoryId
	 * @param disable
	 * @return
	 */
	PageObject<JsonProduct> findProductPage(Integer pageNo, Integer pageSize, Long categoryId, Integer disable);

	/**
	 * 调用分页查询商品接口
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @param searchParams
	 * @param sortParam
	 * @param sortType
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	PageObject<JsonProductInManage> findProductPage(Integer pageNo, Integer pageSize, Map<String, Object> searchParams,
			String sortParam, String sortType, Long startTime, Long endTime);

	/**
	 * 调用添加商品接口
	 * 
	 * @param categoryId
	 * @param listImage
	 * @param smallImage
	 * @param images
	 * @param name
	 * @param summary
	 * @param detail
	 * @param deliver
	 * @param deliverFee
	 * @param sort
	 * @return
	 */
	SingleObject<JsonProduct> addProduct(Long categoryId, String listImage, String smallImage, String images,
			String name, String summary, String detail, String deliver, Double deliverFee, Integer sort);

	/**
	 * 调用商品更新接口
	 * 
	 * @param productId
	 * @param categoryId
	 * @param listImage
	 * @param smallImage
	 * @param images
	 * @param name
	 * @param summary
	 * @param detail
	 * @param deliver
	 * @param deliverFee
	 * @param sort
	 * @param disable
	 * @return
	 */
	SingleObject<JsonProduct> updateProduct(Long productId, Long categoryId, String listImage, String smallImage,
			String images, String name, String summary, String detail, String deliver, Double deliverFee, Integer sort,
			Integer disable);

	/**
	 * 调用商品删除接口
	 * 
	 * @param ids
	 * @return
	 */
	SingleObject<Object> deleteProducts(String ids);

	/**
	 * 调用通过id查询商品接口
	 * 
	 * @param productId
	 * @return
	 */
	SingleObject<JsonProduct> findProductById(Long productId);

	/**
	 * 调用查询商品列表接口
	 * 
	 * @param disable
	 * @return
	 */
	ListObject<JsonProduct> findProducts(Integer disable);
}
